chore(deps): update dependency hackney to v4#482
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
Contributor
Author
|
b86f2c4 to
43439f1
Compare
43439f1 to
dccfabc
Compare
efa0a67 to
1a7263a
Compare
eba4a3c to
39ead77
Compare
39ead77 to
4a95b11
Compare
4a95b11 to
16a61dd
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.25.0→== 4.4.2Release Notes
benoitc/hackney (hackney)
v4.4.2Compare Source
Fixed
ssl_poolingcheckout path. Withssl_poolingenabled andpool_sizebelowmax_per_host, a second concurrent HTTPS request could still fail withcheckout_timeout; it now opens an overflow connection like the plain checkout path, closed at checkin rather than pooled. HTTP/2 and HTTP/3 are unaffected (they multiplex over shared connections). (#882)v4.4.1Compare Source
Fixed
checkout_timeoutwhen a connection from a just-completed request has not yet been checked back in.pool_size/max_connectionsnow bounds the warm (idle) pool kept for reuse; per-host concurrency is capped bymax_per_host. A request beyond the warm pool size opens an overflow connection that is closed at checkin instead of being pooled. Setmax_per_hostto cap concurrent connections to a host.Dependencies
v4.4.0Compare Source
Added
streamas the body, send chunks withsend_body/2thenfinish_send_body/1, and read the response withstart_response/1followed bybody/1orstream_body/1. (#875)h2_*API (h2_open,h2_send,h2_recv,h2_send_trailers,h2_consume,h2_setopts,h2_close), mirroring thews_*andwt_*APIs. Send and receive interleaved on one stream, with trailers, passive/active delivery, and{flow_control, manual}+h2_consume/2backpressure. (#876)Dependencies
v4.3.0Compare Source
Added
{ssl_pooling, true}(request option or application env, default false). Upgraded SSL connections return to the pool keyed by the hash of their effective TLS options and are reused only on an exact match, skipping the handshake on follow-up requests. (#872)ssl_options, connections use{session_tickets, auto}. Disable with thetls_session_resumptionenv. Customssl_optionsnever resume (the OTP ticket store is node-wide and a resumed session skips certificate validation). (#872)Changed
ssl_optionsno longer share a connection or resume each other's tickets.server_name_indicationis sent for IP-literal hosts (RFC 6066) across HTTP/1.1, HTTP/2 and HTTP/3. A user-suppliedserver_name_indicationis honored consistently as both the wire value and the verification target, anddisablesuppresses SNI without weakening verification.quicto 1.6.5 andwebtransportto 0.4.0.v4.2.3Compare Source
Dependencies
v4.2.2Compare Source
Fixed
find_availablecould callhackney_conn:is_ready/1on a connection that died right after theis_process_alive/1check, and the resultingnoprocexit took down the pool. The dead connection is now skipped. (#869)v4.2.1Compare Source
Dependencies
v4.2.0Compare Source
Added
familyconnect option (inet|inet6) is forwarded to QUIC, which resolves DNS and races addresses with Happy Eyeballs (RFC 8305). IPv6 literals such ashttps://[::1]/work too.{host, port, transport}and replayed on the next connection; a bodyless one-shot request is then sent as 0-RTT, otherwise the ticket gives a resumed handshake. Controlled by thezero_rttoption, with an explicitsession_tickettaking precedence. Newhackney_h3helpers:early_data_accepted/1,get_session_ticket/1,wait_session_ticket/2.Fixed
ssl_options(cacerts,insecure) that previously did not reach the QUIC layer.exit:{normal, _}/exit:noprocto the caller; request, body and streaming calls return{error, closed}instead (#861).localhost) or a binary is accepted again for the plain, connect and socks5 proxy tuples instead of being silently ignored (#858).Dependencies
v4.1.0: hackney 4.1.0Compare Source
WebTransport client. Drop-in addition alongside the WebSocket API, no breaking changes.
Added
hackney:wt_connect/1,2,wt_send/2,wt_recv/1,2,wt_setopts/2,wt_close/1,2), mirroring the WebSocketws_*API so code switches by swapping thews_prefix forwt_. Runs over HTTP/3 (default) or HTTP/2. One session multiplexes many streams (wt_open_stream/2,wt_stream_send/3,4,wt_stream_recv/2,3,wt_close_stream/2,wt_reset_stream/3,wt_stop_sending/3) plus unreliable datagrams (wt_send_datagram/2) andwt_session_info/1. No custom wire framing, so it interoperates with any WebTransport server. Caller path and headers are checked for CR/LF/NUL and a buffer cap bounds unread data. See the WebTransport Guide.Dependencies
webtransport0.2.6.Full changelog: https://github.com/benoitc/hackney/blob/master/NEWS.md
v4.0.3: hackney 4.0.3Compare Source
OTP 29 support and HTTP/3 server-certificate verification. Drop-in upgrade from 4.0.2, no API changes.
Security
insecureoption and any configured CA (cacerts/cacertfileinssl_options) through to the QUIC connection, so verification can be disabled or pointed at a custom trust store. Without a configured CA, quic uses its default trust store.Changed
catch Exprform withtry ... catchso hackney compiles cleanly on OTP 29.Dependencies
Full changelog: https://github.com/benoitc/hackney/blob/master/NEWS.md
v4.0.2: hackney 4.0.2Compare Source
Bug-fix release. Drop-in upgrade from 4.0.1, no API changes.
Bug Fixes
set_ownerrace and falls through to a fresh connection instead of crashing on a bad match, and an async ownership handoff to an already-closed pooled connection stops it promptly so the pool drops it from rotation.hackney:body/1,2andhackney:stream_body/1again so the response body can be read afterstart_response/1in streaming body mode (#849). The migration guide and examples referenced these but they were not exported. The getting-started guide and README were corrected as well.Full changelog: https://github.com/benoitc/hackney/blob/master/NEWS.md
v4.0.1: hackney 4.0.1Compare Source
Security release. Fixes 9 reported vulnerabilities (4 high, 4 medium, 1 low) plus one hardening change across the HTTP/1.1, HTTP/2, HTTP/3, WebSocket, cookie and URL handling code. No API changes, so it is a drop-in upgrade from 4.0.0.
If you use hackney directly or through a library (HTTPoison, Tesla's hackney adapter, ExAws, and others), please upgrade.
Security
High
Medium
Low
Hardening
to_atom/1no longer falls back tolist_to_atom/1, removing an atom-leak path (GHSA-6rmf, no CVE assigned).Dependencies
Credits
Thanks to PJUllrich, Ganbagana and tepel-chen for the reports, and to maennchen for coordinating disclosure.
Full changelog: https://github.com/benoitc/hackney/blob/master/NEWS.md
v4.0.0: hackney 4.0.0Compare Source
Hackney 4 trims the client down. The HTTP/2 and HTTP/3 stacks are now delegated to erlang_h2 and erlang_quic, so hackney no longer ships its own framing, HPACK / QPACK codecs, control streams or state machines. The HTTP/3 path is fully RFC 9114 compliant via
quic_h3, with ALPN negotiation, Alt-Svc discovery (RFC 7838), and the samehackney:request/5API as HTTP/1.1.The bundled metrics subsystem is gone. In its place a Go-style middleware chain runs around
hackney:request/1..5, configured per request with{middleware, [Fun, ...]}or globally viaapplication:set_env(hackney, middleware, [...]). Users plug in prometheus, telemetry or anything else without hackney owning the policy. See the Middleware Guide and the HTTP/3 Guide.Breaking
hackney_metrics,hackney_metrics_backend,hackney_metrics_prometheus,hackney_metrics_dummy. Themetrics_backendapp env is no longer read. Migration recipes for prometheus and telemetry are inguides/middleware.md. Pool state is still observable throughhackney_pool:get_stats/1.hackney:request/5API is unchanged.What's new
hackney_middleware): outermost-first composition, request rewrite, response rewrite, short-circuit, per-request or global config.quic_h3: pure Erlang QUIC stack, no NIFs. ALPN-negotiated, opt-in with{protocols, [http3, http2, http1]}orapplication:set_env(hackney, default_protocols, [http3, http2, http1]).Alt-Svcheaders are now parsed and cached on every response (HTTP/1.1, HTTP/2 and HTTP/3), so subsequent requests can upgrade to HTTP/3 transparently. Honorsclearand merges multipleAlt-Svcheaders per RFC 7230 §3.2.2.Deps
h20.4.0quic1.0.0Full changelog: https://github.com/benoitc/hackney/blob/4.0.0/NEWS.md
v3.2.1Compare Source
Bug Fixes
recv_timeoutoption being ignored for pooled connections (#832)handle_h2_frame/2for HTTP/2 window updates (#829)v3.2.0: hackney 3.2.0Compare Source
Refactor
src/libs/directory (all modules moved tosrc/)Performance
rand:bytes/1instead ofcrypto:strong_rand_bytes/1for mask keysAdded
h2spec_server.erl: Minimal HTTP/2 server for compliance testingh2spec_SUITE.erl: CT suite for running h2spec testsmake h2spec-testhackney_http3_e2e_SUITE.erl: Tests against Cloudflare, Google, quic.techmake http3-e2e-test,make all-e2e-testhackney_http2_machine_bench.erl)Bug Fixes
send_or_queue_data/4)donemessagev3.1.2Compare Source
Dependencies
quicdependency to 0.10.1v3.1.1: hackney 3.1.1Compare Source
Bug Fixes
quicdependency to 0.7.1 (fixes packet number reconstruction)Added
hackney_quic(verify, cacerts, cacertfile, SNI)hackney_h3(follow_redirect, max_redirect options)v3.1.0Compare Source
Refactor
rebar3 compile.Removed
Added
hackney_qpack.erlfor QPACK header compression (RFC 9204)Changed
hackney_quic:is_available/0now always returnstrue(pure Erlang is always available)Dependencies
quic~>0.5.1 (pure Erlang QUIC implementation)v3.0.3Compare Source
Bug Fixes
send_body/2now work correctly for iterative body streaming, supporting both statelessfun() -> {ok, Data} | eofand statefulfun(State) -> {ok, Data, NewState} | eofforms.CI
v3.0.2Compare Source
Bug Fixes
Content-Type: application/octet-streamheader when sending a body without explicit Content-Type (#823). This restores 1.x behavior and follows RFC 7231 recommendations.Dependencies
certifito 2.16.0 (#824)v3.0.1Compare Source
v3.0.0Compare Source
v2.0.1Compare Source
v2.0.0Compare Source
Configuration
📅 Schedule: (in timezone America/New_York)
* 0-3 * * *)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.